package com.subaiwang.controller;

import com.subaiwang.pojo.Login;
import com.subaiwang.service.login.LoginService;
import com.subaiwang.tools.Constants;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/users")
public class LoginCntroller {
    @Resource
    private LoginService loginService;

    /**
     * 登录页面
     * @return
     */
    @RequestMapping("/login.html")
    public String login(){
        return "login";
    }

    /**
     * 处理登录请求
     * @param username
     * @param password
     * @param session
     * @param model
     * @return
     */
    @RequestMapping(value = "/login.html",method = RequestMethod.POST)
    public String doLogin(@RequestParam(value = "username",required = false)String username,
                          @RequestParam(value = "password",required = false)String password,
                          HttpSession session, Model model){
        Login login=loginService.getUserName(username, DigestUtils.md5Hex(password));
        if (login!=null){

                session.setAttribute(Constants.USER_SESSION,login);

                model.addAttribute("username",((Login)session.getAttribute(Constants.USER_SESSION)).getUsername());
                model.addAttribute("password",(((Login) session.getAttribute(Constants.USER_SESSION)).getPassword()));
                return "redirect:/users/index.html";

        }else{
            model.addAttribute("error","用户名或密码输入错误");
            model.addAttribute("username",username);
            return "login";
        }

    }
    /**
     *
     * @param
     * @return
     */
    public String brokeUpPassWord(String inPassword){
        String password=inPassword;
        //将js加密的密码解密
        String passwordKey = "1234567890qwertyuiopasdfghjklzxcvbnm!@#$%^&*()-+=`~,./?|a";
        password= decryptionStr(passwordKey,password);
        return password;
    }
    /**
     * 解密js 的加密字符串
     *
     * @param key
     * @param strCode
     * @return
     */
    public static String decryptionStr(String key, String strCode) {
        int len = key.length();
        int b, b1, b2, b3;
        int d = 0;
        new ArrayList();
        double db = Math.floor(strCode.length() / 3);
        int[] s = new int[(new Double(db)).intValue()];
        b = s.length;
        for (int i = 0; i < b; i++) {
            b1 = key.indexOf(strCode.charAt(d));
            d++;
            b2 = key.indexOf(strCode.charAt(d));
            d++;
            b3 = key.indexOf(strCode.charAt(d));
            d++;
            s[i] = b1 * len * len + b2 * len + b3;
        }
        String clear = "";
        for (int i = 0; i < s.length; i++) {
            clear += asciiToChar(String.valueOf(s[i]));
        }
        return clear;

    }

    /**
     * 将ascii码的值转成字符
     *
     * @param asci
     * @return
     */
    public static String asciiToChar(String asci) {
        StringBuffer sbu = new StringBuffer();
        String[] chars = asci.split(",");
        for (int i = 0; i < chars.length; i++) {
            sbu.append((char) Integer.parseInt(chars[i]));
        }
        return sbu.toString();
    }
    /**
     * 密码加密
     */
    public  String encodePass(String oldPassword){
        String passKey = "1234567890qwertyuiopasdfghjklzxcvbnm!@#$%^&*()-+=`~,./?|a";
        String s = "";
        char[] a = passKey.toCharArray();
        String[] aStrArry = new String[a.length];
        for (int i = 0; i < a.length; i++) {
            aStrArry[i] = a[i] +"";
        }
        int len = passKey.length();
        int b,b1,b2,b3;
        for (int i = 0; i <oldPassword.length() ; i++) {
            b = Integer.parseInt (String.valueOf((int)oldPassword.charAt(i)));
            b1 = b % len;
            b = (b-b1) / len;
            b2 = b % len;
            b = (b-b2) / len;
            b3 = b % len;
            s += a[b3] +""+ a[b2]+"" +a[b1];
        }
        return s;
    }

    /**
     * 登录到首页
     * @return
     */
    @RequestMapping("/index.html")
    public String index(HttpSession session,Model model)
    {
        Login login= (Login) session.getAttribute(Constants.USER_SESSION);
        model.addAttribute("login",login);
        if(login==null){
            return "login";
        }
        return "index";

    }



    /**
     * 首页中间部分
     * @return
     */
    @RequestMapping("/home.html")
    public String home(){
        return "home";
    }

    /**
     * 退出系统
     * @param session
     * @return
     */
    @RequestMapping("/dologinout.html")
    public String dologinout(HttpSession session){
        session.removeAttribute(Constants.USER_SESSION);
        session.invalidate();
        return "login";
    }

    /**
     * 权限管理
     * @return
     */
    @RequestMapping("/admin_Competence.html")
    public String admin_Competence(HttpSession session){
        List<Login> list=loginService.getLogin(null);
        int count=loginService.loginCount("超级管理员");
        int count2=loginService.loginCount("普通管理员");
        int count3=loginService.loginCount("编辑管理员");
        session.setAttribute("count",count);
        session.setAttribute("count2",count2);
        session.setAttribute("count3",count3);
        session.setAttribute("list",list);
        return "admin_Competence";

    }

    /**
     * 管理员列表
     * @return
     */
    @RequestMapping("/administrator.html")
    public String administrator(HttpSession session){
        int count=loginService.loginCount(null);
        session.setAttribute("count",count);
        List<Login> list=loginService.getLogin(null);
        session.setAttribute("list",list);
        session.setAttribute("count",count);
        return "administrator";
    }

    /*
     * 管理员管理 --个人信息
     * @return
     */
    @RequestMapping("/admin_info.html")
    public String admin_info(Model model,HttpSession session)
    {
        Login login=(Login)session.getAttribute(Constants.USER_SESSION);
        Login list=loginService.getUserName(login.getUsername(),login.getPassword());
        model.addAttribute("list",list);
        return "admin_info";
    }

    /**
     * 平台工具管理 --订单管理
     * @return
     */
    @RequestMapping("/Orderform.html")
    public String orderform(){
        return "Orderform";
    }
    /**
     * 平台工具管理 --快递物流平台管理
     * @return
     */
    @RequestMapping("/Amounts.html")
    public String amounts(){
        return "Amounts";
    }
    /**
     * 平台工具管理 --工具管理
     * @return
     */
    @RequestMapping("/Order_handling.html")
    public String order_handling(){
        return "Order_handling";
    }/**
     * 平台工具管理 --休闲娱乐管理
     * @return
     */
    @RequestMapping("/Refund.html")
    public String refund(){
        return "Refund";
    }
    /**
     * 分类管理 --分类列表
     * @return
     */
    @RequestMapping("/Cover_management.html")
    public String Cover_management(){
        return "Cover_management";
    }
    /**
     * 分类管理 --支付方式
     * @return
     */
    @RequestMapping("/payment_method.html")
    public String payment_method(){
        return "payment_method";
    }
    /**
     * 会员管理 --会员列表
     * @return
     */
    @RequestMapping("/user_list.html")
    public String user_list(){
        return "user_list";
    }
    /**
     * 会员管理 --等级管理
     * @return
     */
    @RequestMapping("/member-Grading.html")
    public String memberGrading(){
        return "member-Grading";
    }
    /**
     * 会员管理 --会员记录管理
     * @return
     */
    @RequestMapping("/integration.html")
    public String integration(){
        return "integration";
    }
    /**
     * 塑料管理 --塑料列表
     * @return
     */
    @RequestMapping("/Shop_list.html")
    public String Shop_list(){
        return "Shop_list";
    }
    /**
     * 塑料管理 --店铺审核
     * @return
     */
    @RequestMapping("/Shops_Audit.html")
    public String Shops_Audit(){
        return "Shops_Audit";
    }
    /**
     * 视频管理 --视频列表
     * @return
     */
    @RequestMapping("/Guestbook.html")
    public String Guestbook(){
        return "Guestbook";
    }
    /**
     * 视频管理 --意见反馈
     * @return
     */
    @RequestMapping("/Feedback.html")
    public String Feedback(){
        return "Feedback";
    }
    /**
     * 其他管理 --邮箱列表
     * @return
     */
    @RequestMapping("/article_list.html")
    public String article_list(){
        return "article_list";
    }
    /**
     * 其他管理 --分类管理
     * @return
     */
    @RequestMapping("/article_Sort.html")
    public String article_Sort(){
        return "article_Sort";
    }
    /**
     * 系统管理 --系统栏目管理
     * @return
     */
    @RequestMapping("/System_section.html")
    public String System_section(){
        return "System_section";
    }
    /**
     * 系统管理 --系统设置
     * @return
     */
    @RequestMapping("/Systems.html")
    public String Systems(){
        return "Systems";
    }








}
